import { setup } from "@css-render/vue3-ssr";

export default defineNuxtPlugin((nuxtApp) => {
  if (process.server) {
    const { collect } = setup(nuxtApp.vueApp);
    const originalRenderMeta = nuxtApp.ssrContext?.renderMeta;
    nuxtApp.ssrContext = nuxtApp.ssrContext; // 这两行不一样，我没有把空对象赋值上去
    if (nuxtApp.ssrContext) {
      // 加了一个nuxtApp.ssrContext有值的判断
      nuxtApp.ssrContext.renderMeta = () => {
        if (!originalRenderMeta) {
          return {
            headTags: collect(),
          };
        }
        const originalMeta = originalRenderMeta();
        if ("then" in originalMeta) {
          return originalMeta.then(
            (resolvedOriginalMeta: { [x: string]: string }) => {
              return {
                ...resolvedOriginalMeta,
                headTags: resolvedOriginalMeta["headTags"] + collect(),
              };
            }
          );
        } else {
          return {
            ...originalMeta,
            headTags: originalMeta["headTags"] + collect(),
          };
        }
      };
    }
  }
});
